/*! \file
 * \brief Empty.
 * \author Ivo Wingelaar
 * \date 2011
 * \version 0.1.0
 * \copyright GNU Lesser General Public License v3
 */

#ifndef __MR_ALGORITHM_STUB_C_HPP_INCLUDED__
#define __MR_ALGORITHM_STUB_C_HPP_INCLUDED__

#include "MythRandom.hpp"

namespace Myth
{
namespace Random
{

/** class                 **/
/** AlgorithmStub_C **/
//! A stub random number generator.
class AlgorithmStub_C : public Algorithm
{
public:
    /** default destructor **/
    virtual ~AlgorithmStub_C();

    /** virtual function **/
    /** random_init      **/
    //! Initializes the generator with a new seed.
    /// \return void
    /// \param   int32_t seed
    ///         The seed to initialize the generator with.
    virtual void random_init(int32_t seed) = 0;

    /** virtual function **/
    /** get_random_bytes **/
    //! Return 32 random bits.
    /// \return uint32_t
    ///         32 random bits.
    /// \param  void
    virtual uint32_t get_random_bytes(void) = 0;

    /** virtual function **/
    /** get_random_int   **/
    //! Returns a random number in the interval [min, max].
    /// \return int32_t
    ///         A number between min and max (inclusive).
    /// \param   int32_t min
    ///         The smallest number allowed.
    /// \param   int32_t max
    ///         The largest number allowed.
    virtual int32_t get_random_int( int32_t min, int32_t max);

    /** virtual function  **/
    /** get_random_double **/
    //! Return a random 64 bit floating point value in the interval [0, 1]
    /// \return double
    ///         A random 64 bit float.
    /// \param  void
    virtual double get_random_double(void);
};

} // namespace Random
} // namespace Myth

#endif // __MR_ALGORITHM_STUB_C_HPP_INCLUDED__

